PSGでハードウェアエンベロープ(H.ENV)をそのまま、または半分の振幅で出せるという仕組みについてメモ
※ ノイズが有効ならさらにノイズを掛け算
ミュートにするとミキサーは0ではなく1を出す。
つまり、ミュート時は
が、出力されるという特殊な発音が可能になっている。
分周比2や1(0指定時は1と同じ挙動)を指定すると50KHzや111KHzの成分が混じるが、この周波数域の音は音声フィルタ回路に弾かれる。
フィルタに弾かれなかったとしても、人間には聞こえない。
結果として音量が半減したハードウェアエンベロープの波形だけが聞こえる。
※ ただし、エミュレータなどでは音声出力サンプリング周波数への変換でエイリアスノイズが微妙に発生して聞こえる事がある。
ハードウェアエンベロープをそのまま出力する技法と同様の方法(ミュートまたは分周比2以下のトーン)を使用して、ボリューム値(0~15)を高速に変更すれば、任意の波形を出力可能。
ただし、CPUの命令速度限界以上の周波数は出せない。
MSXのZ80は基本クロックがNTSC 3579540Hz
これを利用して、4bit PCMを実現している例などがある。
音量カーブが対数曲線であるのと、分解能が十分ではないため、複数チャンネルを併用したPCM再生もあるとのこと。
最速を考えた時、
OTIRを使えば21ステート → 3579540 / 21 = 約140KHz
だが、256サンプルしかこの速度を維持できないので現実的ではない。